package br.trainee.web.dao.impl;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;

import oracle.jdbc.internal.OracleTypes;
import br.trainee.web.anotacoes.ConnectionQualifier;
import br.trainee.web.enumeradores.TipoConexao;
import br.trainee.web.vo.CidadeVO;
import br.trainee.web.vo.EstadoVO;

public class CidadeDAO_OLD {
	
	@Inject
	@ConnectionQualifier(tipoConexao = TipoConexao.ORACLE)
	private Connection conexao;

	@Inject
	private Logger log;
	
	private CallableStatement cstm;
	
	private ResultSet rs;

	//@Override
	public List<CidadeVO> consultarCidadePorEstado(Long idEstado) {
		List<CidadeVO> listaCidade =  new ArrayList<CidadeVO>();
		CidadeVO cidade = null;
		
		try {
			cstm = conexao.prepareCall("{call pr_consultar_cidade_por_estado(?,?)}");
			
			cstm.setLong(1, idEstado);
			cstm.registerOutParameter(2, OracleTypes.CURSOR);
			
			if(!cstm.execute()){
				rs = (ResultSet) cstm.getObject(2);
				
				while(rs.next()){
					
					cidade = new CidadeVO();
					
					cidade.setIdCidade(rs.getLong("id_cidade"));
					cidade.setNomeCidade(rs.getString("nome_cidade"));
					cidade.setEstado(new EstadoVO());
					cidade.getEstado().setIdEstado(rs.getLong("id_estado"));
					
					listaCidade.add(cidade);
					
				}
			}
			
			
		} catch (SQLException e) {
			log.log(Level.SEVERE, e.getMessage());
			return null;
		}
		finally{
			try {
				conexao.close();
				cstm.close();
				if(rs != null){
					rs.close();
				}
			} catch (SQLException e) {
				log.log(Level.SEVERE, e.getMessage());
			}
		}
		
		
		
		return listaCidade;
	}

	
}
